#ifndef SPHERE_PRIMITIVE_H
#define SPHERE_PRIMITIVE_H

#include "object.h"

class SpherePrimitive : public Object{
    public:
        SpherePrimitive(int = 0);
        SpherePrimitive(const SpherePrimitive&, int);
        SpherePrimitive(const Vector3D &, double, const Material &, int = 0);
        SpherePrimitive(const Vector3D &, double, const Material &, const Matrix &, const Matrix &, int = 0);
        ~SpherePrimitive();

        double getRadius() const;
        void setRadius(double);

        double volume() const;
        double area() const;

        void draw(bool, bool = false, const Material & = Material()) const;
        std::vector<Trio> intersection(const Ray &) const;
        void getMinMax(double *, double *, unsigned int) const;
        Vector3D normal(const Vector3D &) const;

    private:
        double radius;
};

#endif
